﻿#pragma once
#include <string>
#include <list>
#include <functional>
#include <stdint.h>

namespace QryData
{
	enum QryType : uint8_t
	{
		Qry_None, // 未知
		Qry_Account, // 账户查询
		Qry_Position, // 仓位查询
	};
	// 查询返回通告的函数
	typedef std::function<void(QryType pType)> QryBackFunc;

	// total_asset = cash + margin + fronzen
	// balance = cash + margin + fronzen - floating_pnl
	// total_asset: 总资产
	// cash: 可用资金，可用于购买证券资产的资金
	// margin: 保证金，对于股票来说就是持有的股票资产
	// fronzen: 冻结资金，未成交的订单也需要预先占用资金
	struct Account {
		uint64_t account_id;  // 资金账户号
		double total_asset;   // 总资产
		double balance;       // 结余
		double cash;          // 可用资金
		double margin;        // 保证金
		double frozen;        // 冻结金额
		double floating_pnl;  // 浮动盈亏
	};

	struct PositionDetail {
		//int yd_holdings = 0;
		int holdings = 0;
		int frozen = 0;
		int open_pending = 0;
		int close_pending = 0;

		double cost_price = 0;
		double float_pnl = 0;
		bool isLong; // 是否是多头
		bool isYd; // 是否是昨仓
	};

	struct Position {
		//std::string symbolName;
		//PositionDetail long_pos{};
		//PositionDetail short_pos{};
		std::list<PositionDetail> poses;

	};

}